home *** CD-ROM | disk | FTP | other *** search
/ Introducing the New Way to Shop From Home / Introducing the New Way to Shop From Home (Iceland Foods) (2003).iso / pc / get_going.dxr / UI elements_26_Multi-State Button.ls < prev    next >
Encoding:
Text File  |  2003-01-21  |  5.5 KB  |  214 lines

  1. property spriteNum, mySprite, myOffMember, myOffOverMember, myOffDownMember, myOffCommand, myOnMember, myOnOverMember, myOnDownMember, myOnCommand, theMouseWasUp, myRollover, myState, ourID, ourGroupList, ourMouseDown
  2.  
  3. on getBehaviorDescription me
  4. end
  5.  
  6. on getBehaviorTooltip me
  7.   return "Create an ON/OFF button which reacts to rollovers and clicks. " & "Use several such buttons together as a radio button group."
  8. end
  9.  
  10. on beginSprite me
  11.   Initialize(me)
  12. end
  13.  
  14. on prepareFrame me
  15.   CheckForRollover(me)
  16. end
  17.  
  18. on mouseDown me
  19. end
  20.  
  21. on mouseUp me
  22.   if ourMouseDown[1] then
  23.     Toggle(me)
  24.   end if
  25. end
  26.  
  27. on mouseUpOutSide me
  28.   CheckGroupForClick(me)
  29. end
  30.  
  31. on Initialize me
  32.   mySprite = sprite(me.spriteNum)
  33.   ourGroupList = []
  34.   myOffMember = member(myOffMember)
  35.   myOffOverMember = member(myOffOverMember)
  36.   myOffDownMember = member(myOffDownMember)
  37.   myOnMember = member(myOnMember)
  38.   myOnOverMember = member(myOnOverMember)
  39.   myOnDownMember = member(myOnDownMember)
  40.   sendAllSprites(#ToggleButton_GroupRollCall, ourID, ourGroupList)
  41.   call(#ToggleButton_MouseDownList, ourGroupList, [0])
  42. end
  43.  
  44. on CheckForRollover me
  45.   mouseOverMe = the rollover = me.spriteNum
  46.   if myRollover = mouseOverMe then
  47.     if theMouseWasUp = the mouseUp then
  48.       exit
  49.     else
  50.       theMouseWasUp = the mouseUp
  51.       if mouseOverMe then
  52.         if the mouseUp then
  53.           case myState of
  54.             1:
  55.               mySprite.member = myOnOverMember
  56.             0:
  57.               mySprite.member = myOffOverMember
  58.           end case
  59.         end if
  60.       end if
  61.     end if
  62.   else
  63.     myRollover = mouseOverMe
  64.     if ourMouseDown[1] then
  65.       if myRollover then
  66.         case myState of
  67.           1:
  68.             mySprite.member = myOnDownMember
  69.           0:
  70.             mySprite.member = myOffDownMember
  71.         end case
  72.       else
  73.         case myState of
  74.           1:
  75.             mySprite.member = myOnMember
  76.           0:
  77.             mySprite.member = myOffMember
  78.         end case
  79.       end if
  80.     else
  81.       if not (the mouseDown) and myRollover then
  82.         case myState of
  83.           1:
  84.             mySprite.member = myOnOverMember
  85.           0:
  86.             mySprite.member = myOffOverMember
  87.         end case
  88.       else
  89.         case myState of
  90.           1:
  91.             mySprite.member = myOnMember
  92.           0:
  93.             mySprite.member = myOffMember
  94.         end case
  95.       end if
  96.     end if
  97.   end if
  98. end
  99.  
  100. on clickOn me
  101.   ourMouseDown[1] = 1
  102.   case myState of
  103.     1:
  104.       mySprite.member = myOnDownMember
  105.     0:
  106.       mySprite.member = myOffDownMember
  107.   end case
  108. end
  109.  
  110. on Toggle me, whichState
  111.   if voidp(whichState) then
  112.     myState = not myState
  113.   else
  114.     myState = whichState
  115.   end if
  116.   ourMouseDown[1] = 0
  117.   theMouseWasUp = 1
  118.   case myState of
  119.     1:
  120.       mySprite.member = myOnMember
  121.       updateStage()
  122.       do(myOnCommand)
  123.     0:
  124.       mySprite.member = myOffMember
  125.       updateStage()
  126.       do(myOffCommand)
  127.   end case
  128.   if ourGroupList.count() then
  129.     if myState then
  130.       call(#ToggleButton_Off, ourGroupList, me)
  131.     end if
  132.   end if
  133. end
  134.  
  135. on CheckGroupForClick me
  136.   groupRollover = call(#ToggleButton_Rollover, ourGroupList, [])
  137.   if not groupRollover.count() then
  138.     ourMouseDown[1] = 0
  139.   end if
  140. end
  141.  
  142. on ToggleButton_GroupRollCall me, groupID, groupList
  143.   if groupID = ourID then
  144.     ourGroupList = groupList
  145.     ourGroupList.append(me)
  146.   end if
  147.   return groupList
  148. end
  149.  
  150. on ToggleButton_MouseDownList me, mouseDownList
  151.   ourMouseDown = mouseDownList
  152. end
  153.  
  154. on ToggleButton_Rollover me, theList
  155.   if the rollover = me.spriteNum then
  156.     theList.append(me.spriteNum)
  157.   end if
  158.   return theList
  159. end
  160.  
  161. on ToggleButton_Off me, callingBehavior
  162.   if callingBehavior = me then
  163.     exit
  164.   end if
  165.   Toggle(me, 0)
  166. end
  167.  
  168. on ToggleButton_State me, groupID, statesList
  169.   if not voidp(groupID) then
  170.     if groupID <> ourID then
  171.       exit
  172.     end if
  173.   end if
  174.   case ilk(statesList) of
  175.     #void:
  176.       return myState
  177.     #list:
  178.       statesList.append(myState)
  179.     #propList:
  180.       statesList.addProp(me.spriteNum, myState)
  181.   end case
  182.   return statesList
  183. end
  184.  
  185. on ToggleButton_ActiveButton me, groupID, theList
  186.   if not voidp(groupID) then
  187.     if groupID <> ourID then
  188.       exit
  189.     end if
  190.   end if
  191.   if not listp(theList) then
  192.     theList = [:]
  193.   end if
  194.   if not theList.count() and myState then
  195.     theList.addProp(#sprite, me.spriteNum)
  196.     theList.addProp(#behavior, me)
  197.   end if
  198.   return theList
  199. end
  200.  
  201. on isOKToAttach me, aSpriteType, aSpriteNum
  202.   tisok = 0
  203.   if aSpriteType = #graphic then
  204.     tisok = 1
  205.   end if
  206.   return tisok
  207. end
  208.  
  209. on getPropertyDescriptionList me
  210.   theMember = sprite(the currentSpriteNum).member
  211.   theMemberNum = theMember.number
  212.   return [#myOffMember: [#comment: "-OFF STATE- Standard member:", #format: #graphic, #default: theMember], #myOffOverMember: [#comment: "Rollover member", #format: #graphic, #default: member(theMemberNum + 1)], #myOffDownMember: [#comment: "MouseDown member", #format: #graphic, #default: member(theMemberNum + 2)], #myOnMember: [#comment: "-ON STATE- Standard member", #format: #graphic, #default: member(theMemberNum + 3)], #myOnOverMember: [#comment: "Rollover member", #format: #graphic, #default: member(theMemberNum + 4)], #myOnDownMember: [#comment: "MouseDown member", #format: #graphic, #default: member(theMemberNum + 5)], #myOnCommand: [#comment: "-COMMAND SENT- when switched ON", #format: #string, #default: "sendAllSprites #Toggle_On, the currentSpriteNum"], #myOffCommand: [#comment: "when switched OFF", #format: #string, #default: "sendAllSprites #Toggle_Off, the currentSpriteNum"], #ourID: [#comment: "ID string for the group", #format: #string, #default: EMPTY]]
  213. end
  214.